package com.ruoyi.system.service;

import com.ruoyi.system.domain.AttendanceRecord;
import java.util.List;
import java.util.Map;

/**
 * 考勤记录Service接口
 */
public interface IAttendanceRecordService {
    /**
     * 查询考勤记录
     * @param id 考勤记录主键
     * @return 考勤记录
     */
    AttendanceRecord selectAttendanceRecordById(Long id);

    /**
     * 查询考勤记录列表
     * @param attendanceRecord 考勤记录
     * @return 考勤记录集合
     */
    List<AttendanceRecord> selectAttendanceRecordList(AttendanceRecord attendanceRecord);

    /**
     * 新增考勤记录
     * @param attendanceRecord 考勤记录
     * @return 结果
     */
    int insertAttendanceRecord(AttendanceRecord attendanceRecord);

    /**
     * 修改考勤记录
     * @param attendanceRecord 考勤记录
     * @return 结果
     */
    int updateAttendanceRecord(AttendanceRecord attendanceRecord);

    /**
     * 批量删除考勤记录
     * @param ids 需要删除的考勤记录主键
     * @return 结果
     */
    int deleteAttendanceRecordByIds(Long[] ids);

    /**
     * 删除考勤记录信息
     * @param id 考勤记录主键
     * @return 结果
     */
    int deleteAttendanceRecordById(Long id);

    /**
     * 处理上班打卡
     * @return 影响行数
     *
     */
    int handleCheckIn();

    /**
     * 处理下班打卡
     * @return 影响行数
     *
     */
    int handleCheckOut();

    /**
     * 查询用户当天考勤记录
     * @param userId 用户ID
     * @return 考勤记录
     */
    AttendanceRecord selectTodayRecordByUserId(Long userId);
    // 添加连续正常打卡天数计算接口
    int getContinuousNormalCheckInDays(Long userId);

    List<Map<String, Object>> selectUsersWithNormalDaysLastMonth();

}